﻿Imports System.Data

Public Class CReportingServicio
    Public Function ObtieneNombreJerarquia() As String
        Return CServicioLocalSQLServerDB.ObtieneNombreJerarquia()
    End Function

    Public Function ObtieneJerarquias(ByVal strNombreJerarquia As String) As List(Of CJerarquia)
        Dim dtDatos As DataTable = CServiciosMacrosSyBaseDB.ObtieneJerarquias(strNombreJerarquia)
        Dim lstJerarquias As New List(Of CJerarquia)
        Dim j As CJerarquia

        If dtDatos.Rows.Count > 0 Then
            For Each dt As DataRow In dtDatos.Rows
                j = New CJerarquia()
                With j
                    .Nombre = dt(0).ToString.Replace(".", "")
                    .Condicion = dt(1).ToString.Replace("$.", "")
                End With
                lstJerarquias.Add(j)
                j = Nothing
            Next
        End If

        Return lstJerarquias
    End Function

    Public Function QueryCASHMXN(ByVal strFondos As String) As DataTable
        Return CServiciosMacrosSyBaseDB.QueryCASHMXN(strFondos)
    End Function

    Public Function QueryJerarquias(ByVal strFondos As String, ByVal strNombreJerarquia As String, ByVal strCondicionJerarquia As String) As DataTable
        Return CServiciosMacrosSyBaseDB.QueryJerarquias(strFondos, strNombreJerarquia, strCondicionJerarquia)
    End Function

    Public Function ObtieneTiposInstrumentos() As DataTable
        Return CServicioLocalSQLServerDB.ObtieneTiposInstrumentos()
    End Function

    Public Function QueryInstrumentoReporting(ByVal strInstrumento As String) As DataTable
        Return CServiciosMacrosSyBaseDB.QueryInstrumentoReporting(strInstrumento)
    End Function

    Public Function ObtieneCabeceraReporintg() As DataTable
        Return CServicioLocalSQLServerDB.ObtieneCabeceraReporting()
    End Function

    Public Function ObtieneRutaArchivoReporting() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaArchivoReporting()
    End Function

    Public Function ObtieneRutaTLOADERReporting() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaTLOADERReporting()
    End Function

    Public Function ObtieneParametrosTLOADERReporting() As String
        Return CServicioLocalSQLServerDB.ObtieneParametrosTLOADERReporting()
    End Function

    Public Function EjecutarProceso(ByVal comando As String, ByVal argumentos As String) As Boolean
        Dim proceso As New Process()
        Dim idRegBit As Integer

        Try
            proceso.EnableRaisingEvents = True
            proceso.StartInfo.FileName = comando
            proceso.StartInfo.Arguments = argumentos
            proceso.Start()
            idRegBit = CUtileria.GrabarBitacora("ReportingBancomer", "T-Loader", "Se envía el archivo al T-Loader, proceso ID: " & proceso.Id)
            proceso.Close()
            CUtileria.CompletarRegBitacora(idRegBit)

            Return True

        Catch ex As Exception
            idRegBit = CUtileria.GrabarBitacora("ReportingBancomer", "T-Loader", ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)
            Return False
        End Try
    End Function

    Public Function ObtieneSegundosEspera() As Integer
        Return CServicioLocalSQLServerDB.ObtieneSegundosEspera()
    End Function

    Public Function ObtieneTablaValmer(ByVal strRuta As String) As DataTable
        Try
            Return CAccesoHTML.ObtieneTablaValmer(strRuta)
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

    Public Function InsertaBitacoraDECALOG(ByVal strNombreArchivo As String, ByVal intUsuario As Integer) As Integer
        Try
            Return CServicioLocalSQLServerDB.InsertaBitacoraDECALOG(15, strNombreArchivo, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("ReportingBancomer", "GuardarBitacoraDECALOG", "Error al guardar el folio Decalog para el archivo: " & strNombreArchivo & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return 0
        End Try
    End Function

    Public Function ActualizaBitacoraDECALOG(ByVal intId As Integer, ByVal intEstatus As Integer, ByVal intUsuario As Integer) As Boolean
        Try
            Return CServicioLocalSQLServerDB.ActualizaBitacoraDECALOG(intId, intEstatus, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("ReportingBancomer", "ActualizaBitacoraDECALOG", "Error al actualizar el estatus del folio Decalog: " & intId.ToString & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return False
        End Try
    End Function

    Public Function ActualizaFolioDECALOG(ByVal intId As Integer, ByVal strFolio As String, ByVal intUsuario As Integer) As Boolean
        Try
            Return CServicioLocalSQLServerDB.ActualizaFolioDECALOG(intId, strFolio, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("ReportingBancomer", "ActualizaFolioDECALOG", "Error al actualizar el folio de Decalog: " & intId.ToString & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return False
        End Try
    End Function

    Public Function ObtieneBitacoraDECALOG(ByVal strFechaInicio As String, ByVal strFechaFin As String) As List(Of CBitacoraDecalog)
        Try
            Dim dtDatos As DataTable = CServicioLocalSQLServerDB.ObtieneBitacoraDECALOG(15, strFechaInicio, strFechaFin)
            Dim lstBitacora As New List(Of CBitacoraDecalog)
            Dim b As CBitacoraDecalog

            If dtDatos.Rows.Count > 0 Then
                For Each dt As DataRow In dtDatos.Rows
                    b = New CBitacoraDecalog()
                    With b
                        .Id = Convert.ToInt32(dt(0))
                        .IdEstatus = Convert.ToInt32(dt(1))
                        .Estatus = Convert.ToString(dt(2))
                        .Archivo = Convert.ToString(dt(3))
                        .Folio = Convert.ToString(dt(4))
                        .Usuario = Convert.ToString(dt(5))
                        .Fecha = Convert.ToDateTime(dt(6))
                        .MensajeError = Convert.ToString(dt(7))
                    End With
                    lstBitacora.Add(b)
                    b = Nothing
                Next
            End If

            Return lstBitacora
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ObtieneFondoBench() As DataTable
        Return CServicioLocalSQLServerDB.ObtieneFondoBench()
    End Function

    Public Function AltaFondoBench(ByVal strFondo As String, ByVal strBench As String, ByVal intUsuario As Integer) As Integer
        Return CServicioLocalSQLServerDB.AltaFondoBench(strFondo, strBench, intUsuario)
    End Function

    Public Function ActualizaFondoBench(ByVal fondoAnterior As CFondoBench, ByVal fondoNuevo As CFondoBench, ByVal intUsuario As Integer, ByVal intOpcion As Int16)
        Return CServicioLocalSQLServerDB.ActualizaFondoBench(fondoAnterior.FONDO, fondoAnterior.BENCH, fondoNuevo.FONDO, fondoNuevo.BENCH, intUsuario, intOpcion)
    End Function

    Public Function EliminaFondoBench(ByVal strFondo As String, ByVal strBench As String) As Boolean
        Try
            Dim intB As Integer = CUtileria.GrabarBitacora("ConfigReporting", "Borrar registro fondo bench", "Eliminación del FONDO = " & strFondo & " y BENCH = " & strBench)

            Dim blnResultado As Boolean = CServicioLocalSQLServerDB.EliminaFondoBench(strFondo, strBench)

            CUtileria.CompletarRegBitacora(intB)

            Return blnResultado
        Catch ex As Exception
            Dim intBError As Integer = CUtileria.GrabarBitacora("ConfigReporting", "Borrar registro fondo bench", ex.Message)
            CUtileria.CompletarRegBitacora(intBError)

            Return False
        End Try
    End Function

    Public Function AltaTipoInstrumento(ByVal strTipoInstrumento As String, ByVal strNombre As String, ByVal strClase As String, ByVal strGrupo As String, ByVal intUsuario As Integer) As Integer
        Return CServicioLocalSQLServerDB.AltaTipoInstrumento(strTipoInstrumento, strNombre, strClase, strGrupo, intUsuario)
    End Function

    Public Function ActualizaTipoInstrumento(ByVal tipoInstAnterior As CTipoInstrumento, ByVal tipoInstNuevo As CTipoInstrumento, ByVal intUsuario As Integer, ByVal intOpcion As Int16)
        Return CServicioLocalSQLServerDB.ActualizaTipoInstrumento(tipoInstAnterior.TIPOINSTRUMENTO, tipoInstAnterior.NOMBRE, tipoInstAnterior.CLASE, tipoInstAnterior.GRUPO, tipoInstNuevo.TIPOINSTRUMENTO, tipoInstNuevo.NOMBRE, tipoInstNuevo.CLASE, tipoInstNuevo.GRUPO, intUsuario, intOpcion)
    End Function

    Public Function EliminaTipoInstrumento(ByVal strTipoInstrumento As String, ByVal strNombre As String, ByVal strClase As String, ByVal strGrupo As String) As Boolean
        Try
            Dim intB As Integer = CUtileria.GrabarBitacora("ConfigReporting", "Borrar tipo instrumento", "Eliminación del tipo de instrumento = " & strTipoInstrumento & ", Nombre = " & strNombre & ", Clase = " & strClase & ", y Grupo = " & strGrupo)

            Dim blnResultado As Boolean = CServicioLocalSQLServerDB.EliminaTipoInstrumento(strTipoInstrumento, strNombre, strClase, strGrupo)

            CUtileria.CompletarRegBitacora(intB)

            Return blnResultado
        Catch ex As Exception
            Dim intBError As Integer = CUtileria.GrabarBitacora("ConfigReporting", "Borrar tipo instrumento", ex.Message)
            CUtileria.CompletarRegBitacora(intBError)

            Return False
        End Try
    End Function

    Public Function ObtieneRutaArchivoResumenReporting() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaArchivoResumenReporting()
    End Function

    Public Function ObtieneRutaArchivoExpRebalancing() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaArchivoExpRebalancing()
    End Function

    Public Function ObtieneRutaArchivoExpTLoader() As String
        Return CServicioLocalSQLServerDB.ObtieneRutaArchivoExpTLoader()
    End Function

    Public Function ActualizaMensajeErrorDECALOG(ByVal intId As Integer, ByVal strMensaje As String, ByVal intUsuario As Integer) As Boolean
        Try
            Return CServicioLocalSQLServerDB.ActualizaMensajeErrorDECALOG(intId, strMensaje, intUsuario)
        Catch ex As Exception
            Dim idRegBit As Integer = CUtileria.GrabarBitacora("ReportingBancomer", "ActualizaErrorDECALOG", "Error al actualizar el mensaje de error de Decalog: " & intId.ToString & ". Error: " & ex.Message)
            CUtileria.CompletarRegBitacora(idRegBit)

            Return False
        End Try
    End Function
End Class